package com.winning.platwebservice.utils;

import org.springframework.stereotype.Component;

/**
 * 数据规范性校验工具类
 */


@Component
public class ValidateUtils {

  /*  private static final Logger logger = LogManager.getLogger(ValidateUtils.class);

    @Autowired
    EhcacheUtil ehcacheUtil;

    *//**
     * 校验数据方法
     *
     * @param
     * @param
     * @return
     *//*
    public Map<String, Object> checkData(String bm, Map jbData) {
        List<SjyyxxEntity> listSjyxxAll = ehcacheUtil.zyCache.get("sjyxx"); //获取数据元信息

       logger.info(listSjyxxAll.size());

        List<SjyyxxEntity> listSjyxx = listSjyxxAll.stream().filter(SjyyxxEntity ->
                SjyyxxEntity.getSjjdm().equals(bm)).collect(Collectors.toList()); //根据数据集代码过滤


        Map<String, Object> restMap = new LinkedHashMap<String, Object>();
        restMap.put("RESULT", true);

        for (SjyyxxEntity sjyxx : listSjyxx) {
            if (jbData.get(sjyxx.getSjydm()) != null) {
                Object sjydm = jbData.get(sjyxx.getSjydm());

                notNullCheck(sjyxx, sjydm, restMap);
                typeCheck(sjyxx, sjydm, restMap);

            }
        }
        return restMap;
    }

    public void typeCheck(SjyyxxEntity sjyxx, Object sjydm, Map<String, Object> restMap) {
        Map<String, String> map = new LinkedHashMap<String, String>();
        if (!StringUtils.isEmpty(sjydm.toString().trim())) {

            String sjylx = sjyxx.getSjylx().toUpperCase();
            if (sjylx.contains("CHAR")) { //校验字符传类型
                if (sjydm.toString().length() > sjyxx.getSjycdzs()) {

                    map.put("VALUE", sjydm.toString());

                    map.put("ERROR", "字符串传长度超过最大长度:" + sjyxx.getSjycdzs());
                    restMap.put(sjyxx.getSjydm(), map);
                    restMap.put("RESULT", false);
                }
            } else if (sjylx.contains("INT")) {//校验整数类型
                if (!StringUtils.isNumeric(sjydm.toString())) {
                    map.put("VALUE", sjydm.toString());
                    map.put("ERROR", sjylx + "类型数据格式错误");
                    restMap.put(sjyxx.getSjydm(), map);
                    restMap.put("RESULT", false);
                } else if (sjydm.toString().length() > sjyxx.getSjycdzs()) {
                    map.put("VALUE", sjydm.toString());
                    map.put("ERROR", "超出最大长度" + sjyxx.getSjycdzs());
                    restMap.put(sjyxx.getSjydm(), map);
                }
            } else if (sjylx.contains("DECIMAL") || sjylx.contains("NUM")) {//校验小数
                if (!sjydm.toString().contains("^[0-9]+([.]{1}[0-9]+){0,1}$")) {
                    map.put("VALUE", sjydm.toString());
                    map.put("ERROR", sjylx + "类型数据格式错误");
                    restMap.put(sjyxx.getSjydm(), map);
                    restMap.put("RESULT", false);
                }
            } else if (sjylx.contains("DATE")) {//校验日期

                if (!sjydm.toString().matches("^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))($|\\s([0-1]\\d|[2][0-3])\\:[0-5]\\d\\:[0-5]\\d)$")) {
                    map.put("VALUE", sjydm.toString());
                    map.put("ERROR", sjylx + "类型数据格式错误");
                    restMap.put(sjyxx.getSjydm(), map);
                    restMap.put("RESULT", false);
                }
            }

        }
    }

    //非空校验方法

    public void notNullCheck(SjyyxxEntity sjyxx, Object sjydm, Map<String, Object> restMap) {


        if ((sjyxx.getSfzj().equals("1") || sjyxx.getSjyys().equals(0))) {
            if (sjydm != null && sjydm.toString().length() <= 0) {
                Map<String, String> map = new LinkedHashMap<String, String>();
                map.put("VALUE", sjydm.toString());

                map.put("ERROR", "字段是主键或必填,不能为空");
                restMap.put(sjyxx.getSjydm(), map);
                restMap.put("RESULT", false);
            } else {
                if ((!sjyxx.getSjylx().equals("DATE")) && sjydm.toString().length() > sjyxx.getSjycdzs()) {
                    Map<String, String> map = new LinkedHashMap<String, String>();
                    map.put("VALUE", sjydm.toString());
                    map.put("ERROR", "字符长度超过" + sjyxx.getSjycdzs());
                    restMap.put(sjyxx.getSjydm(), map);
                    restMap.put("RESULT", false);
                }
            }
        }

    }
*/

}
